﻿using System;
using System.Collections.Generic;
using System.Linq;
using Crosland.Automotriz.Entidad;
using System.Data.SqlClient;
using System.Data.EntityClient;
using System.Data;


namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsTD_Cliente_LocalDAO
    {
        private readonly DM_CROSLAND_20130417Entities ContextoDeObjs = new DM_CROSLAND_20130417Entities();

        public List<TD_LocalesCliente> Listar(int Id_Cliente)
        {
            var p = new object[] { new SqlParameter("@ID_CLIENTE", Id_Cliente) };
            var resultado = ContextoDeObjs.ExecuteStoreQuery<TD_LocalesCliente>("exec USP_List_Cliente_Local @ID_CLIENTE", p).AsQueryable().ToList();
            return resultado;
        }

        public bool Insertar(TD_CRM_CLIENTE_LOCAL Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("TD_CRM_CLIENTE_LOCAL", Obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        public bool Actualizar(TD_CRM_CLIENTE_LOCAL Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("TD_CRM_CLIENTE_LOCAL", Obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(Obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        public bool Eliminar(int Id_Cliente, int Id_Local)
        {
            try
            {
                ContextoDeObjs.ExecuteStoreCommand("delete TD_CRM_CLIENTE_CLASIFICACION_LOCAL WHERE id_local = '" + Id_Local.ToString() + "'");
                ContextoDeObjs.ExecuteStoreCommand("delete TD_CRM_CLIENTE_LOCAL WHERE id_local = '" + Id_Local.ToString() + "'AND ID_CLIENTE ='" + Id_Cliente.ToString() + "'");
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public int ObtenerUltimoID_LOCAL()
        {
            try
            {
                var resultado = ContextoDeObjs.TD_CRM_CLIENTE_LOCAL.Select(a => a.ID_LOCAL).Max();
                return int.Parse(resultado.ToString());
            }
            catch (Exception)
            {
                return 0;
            }
        }

        public TD_CRM_CLIENTE_LOCAL Seleccionar(int ID_LOCAL)
        {
            TD_CRM_CLIENTE_LOCAL u = new TD_CRM_CLIENTE_LOCAL();
            try
            {
                var results = from c in ContextoDeObjs.TD_CRM_CLIENTE_LOCAL
                              where (c.ID_LOCAL == ID_LOCAL)
                              select c;

                foreach (var myEntity in results.Distinct().ToArray())
                {
                    u.ID_CLIENTE = myEntity.ID_CLIENTE;
                    u.ID_LOCAL = myEntity.ID_LOCAL;
                    u.DES_NOMBRE = myEntity.DES_NOMBRE;
                    u.DES_DIRECCION = myEntity.DES_DIRECCION;
                    u.DES_REFERENCIA = myEntity.DES_REFERENCIA;
                    u.ID_UBIGEO = myEntity.ID_UBIGEO;
                    u.ID_CONDICION = myEntity.ID_CONDICION;
                    u.DES_ENCARGADO = myEntity.DES_ENCARGADO;
                    u.NUM_VENDEDORES = myEntity.NUM_VENDEDORES;
                    u.DES_TELEFONO1 = myEntity.DES_TELEFONO1;
                    u.DES_TELEFONO2 = myEntity.DES_TELEFONO2;
                    u.DES_TELEFONO3 = myEntity.DES_TELEFONO3;
                    u.DES_EMAIL1 = myEntity.DES_EMAIL1;
                    u.DES_EMAIL2 = myEntity.DES_EMAIL2;
                    u.DES_EMAIL3 = myEntity.DES_EMAIL3;
                    u.NUM_COORDENADA_X = myEntity.NUM_COORDENADA_X;
                    u.NUM_COORDENADA_Y = myEntity.NUM_COORDENADA_Y;
                    u.IND_ESTADO = myEntity.IND_ESTADO;
                    u.ID_ESTADO_EXCLUSIVIDAD = myEntity.ID_ESTADO_EXCLUSIVIDAD;
                    u.ID_CATEGORIA_CLIENTE = myEntity.ID_CATEGORIA_CLIENTE;
                }
            }
            catch (Exception)
            {

            }
            return u;
        }
    }
}
